package com.star.common.vo;

import com.star.common.enums.BizStatus;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
 * 通用数据传输对象
 *
 * @author yangzj
 */
@AllArgsConstructor
@Data
public class Result<T> implements Serializable {
    /**
     * 状态码（1成功 其他都是失败）
     */
    private int code;
    /**
     * 消息
     */
    private String msg;
    /**
     * 返回数据
     */
    private T data;

    public static <T> Result<T> success(T data) {
        return new Result<>(BizStatus.OK.getCode(), null, data);
    }

    public static Result<Object> success() {
        return new Result<>(BizStatus.OK.getCode(), null, null);
    }

    public static Result<Object> fail(int code, String msg) {
        return new Result<>(code, msg, null);
    }

    public static Result<Object> fail(BizStatus status) {
        return new Result<>(status.getCode(), status.getMessage(), null);
    }

    public static Result<Object> fail(BizStatus status, String message) {
        return new Result<>(status.getCode(), message, null);
    }
}
